"""
用于批量处理某一文件夹下的图像文件，由raw格式转为tif/png/jpg
"""

import os
import cv2
import numpy as np

# 在这里修改存放raw文件的文件夹路径
path = r'E:\data\1101-4-360raw\\'
files = os.listdir(path)

# 首先确定原始图片的基本信息：数据格式，行数列数，通道数
rows = 1024  # 图像的行数0
cols = 1024 # 图像的列数
channels = 1 # 图像的通道数，灰度图为1

print('--批量转换开始--')

for file in files:

    # 将文件名和后缀分成两部分
    portion = os.path.splitext(file)
    # 只处理.raw文件
    if portion[1] == '.raw':
        realPath = path + file
        # 利用numpy的fromfile函数读取raw文件，并指定数据格式
        img = np.fromfile(realPath, dtype='uint16')  # 这里注意自己图像的位深度
        # 利用numpy中array的reshape函数将读取到的数据进行重新排列。

        img = img.reshape(rows, cols, channels)
        # print(np.shape(img))
        # cropped = img[512:1024, 0:512]
        # print(img[0])
        # 将图像保存为tif格式
        fileName = portion[0] + '.tif'
        tif_fileName = os.path.join(path, fileName)
        cv2.imwrite(tif_fileName, img)
        # cv2.imwrite(tif_fileName, img, (int(cv2.IMWRITE_TIFF_COMPRESSION), 0))  # 1为tif无损压缩；修改这里的参数可以转为其他格式，具体参考上面两篇文章
        print(file + ' 转换完成')
    else:
        print(file + ' 不是.raw文件')

print('--批量转换结束--')
#
# for file in files:
# # img = cv2.imread("./data/cut/thor.jpg")
#
#     # cropped = img[0:128, 0:512]  # 裁剪坐标为[y0:y1, x0:x1]
#     # cv2.imwrite("./data/cut/cv_cut_thor.jpg", cropped)
#     portion = os.path.splitext(file)
#     # 只处理.raw文件
#     if portion[1] == '.tif':
#         realPath = path + file
#         # 利用numpy的fromfile函数读取raw文件，并指定数据格式
#         img = cv2.imread(realPath)
#         print(img.shape)
#         cropped = img[:512, 438:950]  # 裁剪坐标为[y0:y1, x0:x1]
#         fileName = portion[0] + '.tif'
#         tif_fileName = os.path.join(path, fileName)
#         cv2.imwrite(tif_fileName, cropped)
